package com.javayz.fileuploadanddownload.service;

import com.javayz.fileuploadanddownload.entity.Files;
import com.javayz.fileuploadanddownload.entity.all;
import com.javayz.fileuploadanddownload.response.Result;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.List;

/**
 * @author by:
 * @ClassName: FileService
 * @Description: TODO
 * @Date:
 */

@Service
public interface FileService {

    /**
     *@描述：删除文件夹和压缩包
     *@参数： [urlFile]
     *@返回值： java.lang.String
     *@创建人： ZLQ
     *@创建时间： 2022/11/10 9:45
     *@修改人和其它信息：
     */
    void deleteFile(String dateFile, File newFile,  HttpServletResponse response);

    /**
     *@描述： 文件传输到新文件夹接口
     *@参数： [files, request, response]
     *@返回值： java.lang.String
     *@创建人： ZLQ
     *@创建时间： 2022/11/10 9:42
     *@修改人和其它信息：
     */
    void inputStream(Files files, String dateUrl) throws IOException;

    /**
     *@描述：文件上传接口
     *@参数： [file]
     *@返回值： com.javayz.fileuploadanddownload.response.Result
     *@创建人： ZLQ
     *@创建时间： 2022/11/4 11:06
     *@修改人和其它信息：
     */
    Result upLoadFiles(MultipartFile file, String newFileName, String[] sourcePk,String[] tableName,String tableFileName);

    /**
     * 根据id获取文件
     * @param id
     * @return
     */
    List<Files> getFileById(String[] id);

    /**
     * @作者： ZLQ
     * @描述： 获取子文件夹
     * @创建时间： 10:52 2022/11/4
     * @参数：  * @param null
     **/
    List<String> fileAll(String tableName);

    List<String> selectAll(String sourcePk, String tableName, String filePathName);

    List<String> queryLists(String[] sourcePk);

    List<String> queryTableGcjbxx(String[] sourcePk);

    List<String> queryTableGcjsgl(String[] sourcePk);

    List<String> queryTableJhcbbz(String[] sourcePk);

    List<String> queryTableJscbbz(String[] sourcePk);

    List<String> queryTableSgkjxy(String[] sourcePk);

    List<String> queryTableSrfpdj(String[] sourcePk);

    List<String> queryTableWxf(String[] sourcePk);

    List<String> queryTableWxht(String[] sourcePk);

    List<String> queryTableWxjh(String[] sourcePk);

    List<String> queryTableWxjs(String[] sourcePk);

    List<String> queryTableWxkjxy(String[] sourcePk);

    List<String> queryTableXsht(String[] sourcePk);

    String selectAllTable(String tableName);

    /**
     * 外协框架协议
     * @param a
     */
    void insertwxkjxy(all a);

    /**
     * 外协合同
     * @param a
     */
    void insertXsht(all a);

    /**
     * 工程基本信息
     * @param a
     */
    void insertGcjbxx(all a);

    /**
     * 销售合同
     * @param a
     */
    void insertSgkjxy(all a);

    /**
     * 施工框架协议
     * @param a
     */
    void insertJhcbbz(all a);

    /**
     * 计划成本编制
     * @param a
     */
    void insertGcjsgl(all a);

    /**
     * 工程决算管理
     * @param a
     */
    void insertJscbbz(all a);

    /**
     * 决算成本编制
     * @param a
     */
    void insertWxjh(all a);

    /**
     * 外协计划
     * @param a
     */
    void insertWxjs(all a);

    /**
     * 外协结算
     * @param a
     */
    void insertSrfpdj(all a);

    /**
     * 收入发票登记
     * @param a
     */
    void insertWxf(all a);

    /**
     * 外协费
     * @param a
     */
    void insertWxht(all a);


    void deleteWxkjxy(String source_pk);

    void deleteWxht(String source_pk);

    void deleteGcjbxx(String source_pk);

    void deleteSgkjxy(String source_pk);

    void deleteJhcbbz(String source_pk);

    void deleteGcjsgl(String source_pk);

    void deleteJscbbz(String source_pk);

    void deleteWxjh(String source_pk);

    void deleteWxjs(String source_pk);

    void deleteSrfpdj(String source_pk);

    void deleteWxf(String source_pk);

    void deleteXsht(String source_pk);

    String selectTableName(String sourcePk);

    all selectEngineeringNo(String tableName,String sourcePk);

    List<String> selectPathName(String urlFile);

    Files selectVbillstatus(String id);

    void deleteVbillstatus(String id);

    all selectVbillstatuIds(String tableName ,String sourcePk);
}
